home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 001a / jmod310.zip / JMODEM_B.C < prev    next >
Text File  |  1991-11-30  |  5KB  |  79 lines

  1. /****************************************************************************/
  2. /*   FILE JMODEM_B.C                                                        */
  3. /*   Created 11-JAN-1990            Richard B. Johnson                      */
  4. /*                                  405 Brougton Drive                      */
  5. /*                                  Beverly, Massachusetts 01915            */
  6. /*                                  BBS (508) 922-3166                      */
  7. /*                                                                          */
  8. /*   get port();         (Parse, get ASCII port)                            */
  9. /*   get_inp();          (Parse, get filename)                              */
  10. /*   get_fun();          (Parse, get function S,R )                         */
  11. /*   get_prt();          (Convert ASCII port to numeric offset)             */
  12. /*                                                                          */
  13. /****************************************************************************/
  14. #include <stdio.h>                              /* Used for _puts();        */
  15. #include <string.h>                             /* Used for _strcpy(), etc  */
  16. #include "jmodem.h"                             /* JMODEM primatives        */
  17. /****************************************************************************/
  18. /*                            Get filename                                  */
  19. /****************************************************************************/
  20. byte *get_inp (word argc, register char *argv[])
  21. {
  22.     register char *name;                   /* Filename string pointer       */
  23.     if (argc > 2)                          /* Check command-line parameters */
  24.     {
  25.         name = argv[2];                    /* Copy the file name pointer    */
  26.         do
  27.         {                                  /* Cheap _toupper()              */
  28.             if ( ( *name <  0x7B )         /* Check upper limit             */
  29.               && ( *name >  0x60 ) )       /* Check lower limit             */
  30.                    *name &= 0x5F;          /* Map to upper case             */
  31.         } while (*(++name));               /* Until the NULL character      */
  32.     return argv[2];                        /* Return a pointer to the name  */
  33.     }
  34.     return (byte *) 0x0000;
  35. }
  36. /****************************************************************************/
  37. /*                          Get function  (S or R)                          */
  38. /****************************************************************************/
  39. byte get_fun(word argc, register char *argv[])
  40. {
  41.     if (argc > 2)                               /* Command-line parameters */
  42.     {
  43.         *argv[1] &= 0x5F;                        /* Map to upper case      */
  44.         if (*argv[1] == 'S' || *argv[1] == 'R')  /* Check valid parameters */
  45.             return *argv[1];                     /* Either 'R' or 'S'      */
  46.     }
  47.     return (byte) 0x00;                          /* Else NULL              */
  48. }
  49. /****************************************************************************/
  50. /*                      Get port ASCII number (1 - 4)                       */
  51. /****************************************************************************/
  52. word get_port(word argc, register char *argv[])
  53. {
  54.     if (argc > 2)                               /* Command-line parameters  */
  55.     {
  56.         if (*(++argv[1]) > '0' && *argv[1] < '5') /* Check for valid ports  */
  57.             return ((word)
  58.                     *argv[1] - '0');            /* Return binary port value */
  59.         if (*argv[1] == '(')                    /* Delimiter for port value */
  60.         {
  61.             word abs_port;
  62.             word abs_irq;
  63.             char test;
  64.             argv[1]++;                          /* Get past the delimiter   */
  65.             sscanf(argv[1],"%x%c%x",&abs_port,  /* Extract port address     */
  66.                                     &test,      /* Extract the delimiter    */
  67.                                     &abs_irq);  /* Extract IRQ number       */
  68.             if (test != ':')                    /* Check the delimiter      */
  69.                 return (word) 0x0000;           /* Bad delimiter ret error  */
  70.             abs_irq = abs_irq << 12;            /* Adjust position          */
  71.             abs_port = abs_port | abs_irq;      /* OR in the IRQ            */
  72.             return abs_port;                    /* Return complex result    */
  73.         }
  74.     }
  75.     return (word) 0x0000;
  76. }
  77. /****************************************************************************/
  78. /************************ E N D  O F   M O D U L E **************************/
  79.